package com.itheima.datastructure.demo1;

import java.util.Arrays;

/**
 * Triangles类用于解决计算给定数组中可以组成的最大周长的三角形问题
 */
public class Triangles {
    /**
     * 主函数入口
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 示例数组，代表多个边长
        int[] sides = {3, 6, 2, 3};
        // 调用largestPerimeter方法计算并打印最大周长
        System.out.println(largestPerimeter(sides));
    }

    /**
     * 计算并返回给定数组中可以组成的最大周长的三角形的周长
     * 如果无法组成三角形，则返回0
     *
     * @param a 一个整数数组，包含多个边长
     * @return 最大周长，如果无法组成三角形则返回0
     */
    public static int largestPerimeter(int[] a) {
        // 对边长数组进行排序，以便后续快速判断
        Arrays.sort(a);
        // 从最大边长开始，向前遍历数组
        for (int i = a.length - 1; i >= 2; i--) {
            // 根据三角形的性质，任意两边之和大于第三边来判断
            if (a[i - 2] + a[i - 1] > a[i]) {
                // 如果找到满足条件的三边，则计算周长并返回
                return a[i - 2] + a[i - 1] + a[i];
            }
        }
        // 如果遍历结束都没有找到满足条件的三边，则返回0
        return 0;
    }
}
